Quel que fois le comportement par défaut du destructeur .la constructeur par copie,et l’opérateur=(affectation)construits par défaut ,sont non souhaitable, il faut les ré-écrire.
Souvent on doit en ré-écrire ,un V il faut ré-écrire les deux aurtre.
Exemple :
class Tab10{
int *t=nullptr;
public :
Tab10(){
t=(int*)(malloc(10*sizeof(int)));
if(t==nullptr)exit(1)
}
int & at(int i){
if(i<0 || i>9 )exit(1);
return this->t[i];
}
~Tab10(){free(this->t);}
}
void g(Tab10 c){
c.at(0)=1;
}
void f(){
Tab10 do ;do.at(10)=1;
Tab10 obj{do};//Tab10 do1=do;
g(ob);
ob=ob1;//do.operator=(obj);
}
}
Tab10(const T10 &s){
this->t=malloc(int *sizeofint);
if(this->t==nullptr)exit(1);
int i;
for(int i=0;i<10;i++;this->t[i]=s.t[i]),
}
Tab& operator=(const tab10& s){
if(this==&fs) return *this;
int i;
for(i=0;i<10;i++)this->t[i]=s.t[i];
return *this;
}
type C exemple:(int expr)(void(*p)(int,int))expr
Conversion de type à la compilateur en C++:
Exemple :
static_cast<T>(expr)<T>:la valeur
expr est convertie dans le type T.
Exemple :
Struct A{
explicit A(B c){......}
}
B obj;
A obj =static_cast<A>(&B);
Ecriture implicite :
A la construction d'une classe plusieur méthode sont disponibles implicitent car construite automatique par le compilateur
Exemple:-
Sont construit par défaut
* constructions sans paramètre
* copie
* opérateur
* destructeur
* et d'autre
un moyen de les interdire est de les écrire explicitement .
Lors de la déclaration d'une méthode ou d'une fonction on peut spécifier au param des valeurs par défaut si ces valeur peuvent être calculée durant la compilateur.
Exemple :
void f(int a,int b=3,double d=5,3);
// void g(int c=6,int b,double d=6.2);
int main(){
f(5,4,2)//ok
f(5,6)//ok f(5,3,5.3);
f(5),//f(5,3,5.3);
//f();erreur
}